from .celery import app
from home.models import Banner
from django.conf import settings
from home.serializer import BannerSerializer
from django.core.cache import cache


@app.task
def update_banner():
    # 查询数据库，拿到所有轮播图，序列化后，放到缓存中
    banner_list = Banner.objects.all().filter(is_delete=False, is_show=True).order_by('orders')[:settings.BANNER_NUM]
    ser = BannerSerializer(instance=banner_list, many=True)
    # 如果在视图类中，做序列化 ，因为视图类中有request对象，所以像图片这种，会自动加前面地址，
    # 在这里没有request对象，需要手动拼
    for item in ser.data:
        item['image'] = settings.BASE_URL + item['image']
    cache.set('home_banner_list', ser.data)
    return True
